@@ -17,7 +17,7 @@ from django.conf import settings |
||
17 | 17 |
from pywe_token import access_token |
18 | 18 |
from pywe_storage import RedisStorage |
19 | 19 |
|
20 |
-from account.models import AdministratorInfo |
|
20 |
+from account.models import AdministratorInfo, UserInfo |
|
21 | 21 |
from goods.models import GoodsInfo, PackInfo |
22 | 22 |
from kol.models import KOLInfo |
23 | 23 |
from pay.models import OrderInfo |
@@ -337,6 +337,102 @@ def live_order_list(request): |
||
337 | 337 |
}) |
338 | 338 |
|
339 | 339 |
@logit(res=True) |
340 |
+def live_order_delivery(request): |
|
341 |
+ admin_id = request.POST.get('admin_id', '') |
|
342 |
+ order_id = request.POST.get('order_id', '') |
|
343 |
+ user_id = request.POST.get('user_id', '') |
|
344 |
+ |
|
345 |
+ delivery_id = request.POST.get('delivery_id', '') |
|
346 |
+ biz_id = request.POST.get('biz_id', '') |
|
347 |
+ |
|
348 |
+ try: |
|
349 |
+ administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) |
|
350 |
+ except AdministratorInfo.DoesNotExist: |
|
351 |
+ return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) |
|
352 |
+ |
|
353 |
+ user = UserInfo.objects.get(user_id=user_id, status=True) |
|
354 |
+ |
|
355 |
+ order = RoomOrderInfo.objects.get(order_id=order_id, status=True) |
|
356 |
+ |
|
357 |
+ goods = liveGoodsInfo.objects.get(goods_id=order.goods_id, status=True) |
|
358 |
+ |
|
359 |
+ wxcfg = WECHAT.get('MINIAPP', {}) |
|
360 |
+ |
|
361 |
+ appid = wxcfg.get('appID') |
|
362 |
+ secret = wxcfg.get('appsecret') |
|
363 |
+ token = access_token(appid, secret) |
|
364 |
+ |
|
365 |
+ data = { |
|
366 |
+ 'add_source': 0, |
|
367 |
+ 'order_id': order_id, |
|
368 |
+ 'openid': user.openid, |
|
369 |
+ 'delivery_id': delivery_id, |
|
370 |
+ 'biz_id': biz_id, |
|
371 |
+ 'custom_remark': goods.name + ' x' + str(order.amount), |
|
372 |
+ 'sender': { |
|
373 |
+ 'name': '孔令朋', |
|
374 |
+ 'tel': '15117949737', |
|
375 |
+ 'company': '', |
|
376 |
+ 'province': '北京市', |
|
377 |
+ 'city': '北京市', |
|
378 |
+ 'area': '海淀区', |
|
379 |
+ 'address': '四季青路8号郦城工作区地下一层1号门', |
|
380 |
+ }, |
|
381 |
+ 'receiver': { |
|
382 |
+ 'name': order.name, |
|
383 |
+ 'tel': order.phone, |
|
384 |
+ 'company': '', |
|
385 |
+ 'province': order.province, |
|
386 |
+ 'city': order.city, |
|
387 |
+ 'area': order.county, |
|
388 |
+ 'address': order.address, |
|
389 |
+ }, |
|
390 |
+ 'cargo': { |
|
391 |
+ 'count': 1, |
|
392 |
+ 'weight': 5, |
|
393 |
+ 'spaceX': 10, |
|
394 |
+ 'spaceY': 10, |
|
395 |
+ 'spaceZ': 10, |
|
396 |
+ 'detail_list': [{ |
|
397 |
+ 'name': goods.name, |
|
398 |
+ 'count': order.amount, |
|
399 |
+ }] |
|
400 |
+ }, |
|
401 |
+ 'shop': { |
|
402 |
+ 'wxa_path': 'pages/live/anchorHome/anchorHome?anchor_id='+order.anchor_id, |
|
403 |
+ 'img_url': goods.goods_img_url, |
|
404 |
+ 'goods_name': goods.name, |
|
405 |
+ 'goods_count': order.amount, |
|
406 |
+ }, |
|
407 |
+ 'insured': { |
|
408 |
+ 'use_insured': 0, |
|
409 |
+ 'insured_value': 0, |
|
410 |
+ }, |
|
411 |
+ 'service': { |
|
412 |
+ 'service_type': 3, |
|
413 |
+ 'service_name': '顺丰标快', |
|
414 |
+ }, |
|
415 |
+ 'expect_time': 0 |
|
416 |
+ } |
|
417 |
+ |
|
418 |
+ res = requests.post(url=('https://api.weixin.qq.com/cgi-bin/express/business/order/add?access_token=' + token), data=json.dumps(data, ensure_ascii=False).encode("utf-8")).text |
|
419 |
+ res = json.loads(res) |
|
420 |
+ errCode = res.get('errcode', 0) |
|
421 |
+ |
|
422 |
+ if errCode != 0: |
|
423 |
+ errMsg = res.get('errmsg', '') |
|
424 |
+ deliveryResultcode = res.get('delivery_resultcode', '') |
|
425 |
+ deliveryResultmsg = res.get('delivery_resultmsg', '') |
|
426 |
+ return response(errCode, errMsg, str(deliveryResultcode) + ':' + deliveryResultmsg) |
|
427 |
+ |
|
428 |
+ order.tracking_number = res.get('waybill_id', '') |
|
429 |
+ order.save() |
|
430 |
+ |
|
431 |
+ return response(200, 'Live Order Delivery Success', '直播订单下单成功', data={ |
|
432 |
+ 'order': order.admindata |
|
433 |
+ }) |
|
434 |
+ |
|
435 |
+@logit(res=True) |
|
340 | 436 |
def fetch_wx_room_list(request): |
341 | 437 |
admin_id = request.POST.get('admin_id', '') |
342 | 438 |
try: |
@@ -51,7 +51,9 @@ urlpatterns += [ |
||
51 | 51 |
url(r'^admin/live/goods/audit$', admin_views.live_goods_audit, name='live_goods_audit'), |
52 | 52 |
|
53 | 53 |
url(r'^admin/live/room/list$', admin_views.live_room_list, name='live_room_list'), # 直播间列表 |
54 |
- url(r'^admin/live/order/list$', admin_views.live_order_list, name='live_order_list'), # 直播间列表 |
|
54 |
+ |
|
55 |
+ url(r'^admin/live/order/list$', admin_views.live_order_list, name='live_order_list'), # 直播间订单列表 |
|
56 |
+ url(r'^admin/live/order/delivery$', admin_views.live_order_delivery, name='live_order_delivery'), # 直播间订单发货 |
|
55 | 57 |
|
56 | 58 |
#微信直播 api |
57 | 59 |
url(r'^admin/live/wx/room/list$', admin_views.fetch_wx_room_list, name='fetch_wx_room_list'), # 微信直播间列表 |
@@ -301,6 +301,7 @@ class RoomOrderInfo(BaseModelMixin): |
||
301 | 301 |
'county': self.county, |
302 | 302 |
'address': self.address, |
303 | 303 |
'tracking_number': self.tracking_number, |
304 |
+ 'amount': self.amount, |
|
304 | 305 |
'total_fee': self.total_fee, |
305 | 306 |
'pay_status': self.pay_status, |
306 | 307 |
'paid_at': tc.local_string(utc_dt=self.paid_at, format='%Y-%m-%d %H:%M'), |